获取 "Interaction_required\",\"error_description\":\"AADSTS530031: 从广告请求令牌时访问策略不允许令牌颁发错误

getting "Interaction_required\",\"error_description\":\"AADSTS530031: Access policy does not allow token issuance error when requesting token from ad

从 Azure 广告获取访问 SharePoint 的令牌时突然出错。

private async Task<string> AcquireTokenAsync(Uri resourceUri, string username, string password)
        {
            string resource = $"{resourceUri.Scheme}://{resourceUri.DnsSafeHost}";

            var clientId = defaultAADAppId;
            var body = $"resource={resource}&client_id={clientId}&grant_type=password&username={HttpUtility.UrlEncode(username)}&password={HttpUtility.UrlEncode(password)}";
            using (var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded"))
            {

                var result = await httpClient.PostAsync(tokenEndpoint, stringContent).ContinueWith((response) =>
                {
                    return response.Result.Content.ReadAsStringAsync().Result;
                }).ConfigureAwait(false);

                var tokenResult = JsonSerializer.Deserialize<JsonElement>(result);
                var token = tokenResult.GetProperty("access_token").GetString();

                return token;
            }
        }


   ValueKind = Object : "{"error":"interaction_required","error_description":"AADSTS530031: Access policy does not allow token issuance.\r\nTrace ID: 823cd416-a194-41b9-a7f7-3b00c33aca00\r\nCorrelation ID: 4c304826-338b-46d7-986c-f7cc5d78820a\r\nTimestamp: 2022-03-10 11:50:20Z","error_codes":[530031],"timestamp":"2022-03-10 11:50:20Z","trace_id":"823cd416-a194-41b9-a7f7-3b00c33aca00","correlation_id":"4c304826-338b-46d7-986c-f7cc5d78820a","error_uri":"https://login.microsoftonline.com/error?code=530031","suberror":"message_only"}"

这是我得到的令牌结果。这很有效 perfectly.Can 有人帮我解决这个问题吗?

正如您之前所说的那样,它工作得很好,看起来,访问可能被设置为共享点的条件访问阻止了。 根据 Troubleshooting sign-in problems with Conditional Access - Azure Active Directory | Microsoft Docs,,管理员可能设置了条件访问策略。尝试联系你的Microsoft 365租户中的管理员,确认你不满足访问的条件是什么,并相应地调整条件以避免被阻止。

请查看 CA 政策。 如果管理员已将 Azure AD 租户设置为阻止来自不受信任站点的访问或不受信任 devices.It 可能是由于您登录的位置或设备不同,因为它可能是从不同位置注册的 initially.If 而不是这些,请检查对于其他条件。

参考文献:

  1. c# - 从已发布的 Azure 发布请求时令牌访问被阻止 函数 - 堆栈溢出
  2. access-token-request-with-a-certificate

如错误消息所述,相关用户不满足一项或多项条件访问策略。如果您在 Azure AD 中具有安全 Reader 角色,则可以查看用户的 sign-in 活动。转到条件访问策略选项卡并查看哪些策略被阻止。您可以点击政策查看详情-条件不满足。

如果您没有阅读 sign-in 信息的权限,则必须联系 Azure AD 管理员,他们可以为您查找信息。